package com.xiaolin.lang.annotation;

import java.lang.annotation.*;

/**
 * @ClassName TestAnnotation
 * @Description TODO
 * @Detail
            @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中，在class字节码文件中不包含
            @Retention(RetentionPolicy.CLASS)     // 默认的保留策略，注解会在class字节码文件中存在，但运行时无法获得，
            @Retention(RetentionPolicy.RUNTIME)  // 注解会在class字节码文件中存在，在运行时可以通过反射获取到
 * @Author MyPC
 * @Date 2020/9/27
 * @Version 1.0
 */
public class TestAnnotation {

    //如果注解的属性是数组类型的，那么有多个值时需要用{}括起来
    @MyAnnotation(name = {"hello","hi"})
    public static void hello(){

    }

}

@Target({ElementType.METHOD,ElementType.FIELD})   //标识该注解可以作用的位置
@Retention(RetentionPolicy.RUNTIME)   //标识注解的生命周期
@Documented  // @Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API
@Inherited   // @Inherited阐述了某个被标注的类型是被继承的。
@interface MyAnnotation{
    //给注解属性设置默认值，那么使用注解时就可以不给该属性赋值
    String[] name() default "小林";
    int value() default 12;
}

